#include <bits/stdc++.h>
using namespace std;
#define int long long
#define s second
#define f first
void helper(int vis[], vector<int>list[], int i, vector<int>&comp){
vis[i]= true;
comp.push_back(i);
for(auto it: list[i]){
if(vis[it]==false){
helper(vis, list, it, comp);
}}
}
void solve(){
int n, t;
cin>>n>>t;
int temp[n+1];
unordered_map<int, int>mp;
for(int i=1; i<=n; i++){
cin>>temp[i];
mp[temp[i]]=i;
}
// sort(temp+1, temp+n+1);
// for(int i=1; i<=n; i++){
// // cin>>temp[i];
// mp[temp[i]]=i;
// }
// for(auto it: mp){
// cout<<it.first<<" "<<it.second<<endl;}
int arr[n+1];
memset(arr, -1, sizeof(arr));
vector<int> list[n+1];
for(int i=0; i<t; i++){
int u, v;
cin>>u>>v;
if(u==v)continue;
list[temp[v]].push_back(temp[u]);
list[temp[u]].push_back(temp[v]);
}
int vis[n+1]={0};
for(int i=1; i<=n; i++){
if(vis[i]==0){
vector<int>comp;
helper(vis, list, i, comp);
sort(comp.begin(), comp.end());
vector<int>help;
for(int j=0; j<comp.size(); j++){
help.push_back(mp[comp[j]]);
}
// for(int s=0; s<comp.size(); s++){
// cout<<comp[s]<<" ";}cout<<"\n";
// for(int s=0; s<comp.size(); s++){
// cout<<help[s]<<" ";}cout<<"\n";
sort(help.begin(), help.end());
for(int j=0; j<comp.size(); j++){
// cout<<comp[j]<<" ";
temp[help[j]]=comp[comp.size()-1-j];
}
// cout<<endl;
// for(int k=1; k<=n; k++){
// cout<<temp[k]<<" ";}
// cout<<"\n";
}
}
for(int k=1; k<=n; k++){
cout<<temp[k]<<" ";}
cout<<"\n";
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif // ONLINE_JUDGE
int t=1;
// cin>>t;
while(t--){
solve();
}
return 0;
}
733. Flood Fill | 206. Reverse Linked List |
83. Remove Duplicates from Sorted List | 116. Populating Next Right Pointers in Each Node |
145. Binary Tree Postorder Traversal | 94. Binary Tree Inorder Traversal |
101. Symmetric Tree | 77. Combinations |
46. Permutations | 226. Invert Binary Tree |
112. Path Sum | 1556A - A Variety of Operations |
136. Single Number | 169. Majority Element |
119. Pascal's Triangle II | 409. Longest Palindrome |
1574A - Regular Bracket Sequences | 1574B - Combinatorics Homework |
1567A - Domino Disaster | 1593A - Elections |
1607A - Linear Keyboard | EQUALCOIN Equal Coins |
XOREQN Xor Equation | MAKEPAL Weird Palindrome Making |
HILLSEQ Hill Sequence | MAXBRIDGE Maximise the bridges |
WLDRPL Wildcard Replacement | 1221. Split a String in Balanced Strings |
1002. Find Common Characters | 1602A - Two Subsequences |